package com.kerrykidz.parreserve.dao.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.kerrykidz.membership.dao.model.CusMemEntity;
import com.kerrykidz.parreserve.dao.model.ParReserveEntity;
import com.kerrykidz.sales.dao.model.PosOrderPrdEntity;
import com.kerrykidz.scminvoicing.dao.model.GblScmPrdEntity;
import com.kerrykidz.scminvoicing.dao.model.GblScmPrdPriceEntity;
import com.kerrykidz.system.dao.model.SysBarCodeEntity;
import com.kerrykidz.workflow.vo.SearchParamVo;
import com.rdp.framework.exception.RDPException;

@Repository
public interface ParReserveEntityMapper {
	int insertParReserve(ParReserveEntity parReserveEntity); 
	int updateParReserve(ParReserveEntity parReserveEntity); 
	public ParReserveEntity findParReserveById(ParReserveEntity parReserveEntity);
	int updateParresFkmemId(ParReserveEntity parReserveEntity);
	/**
	 * 根据 预约id，查找预约房间 关系数据列表
	 * @return List<ParReserveEntity>
	 * @throws RDPException
	 */
	public List<ParReserveEntity> findParReserveRooMList(ParReserveEntity parReserveEntity);
	
	/**
	 * 根据 预约id，查找预约房间 关系数据  分页列表
	 * @return List<ParReserveEntity>
	 * @throws RDPException
	 */
	public List<ParReserveEntity> parReservePageListManages(ParReserveEntity parReserveEntity);
	
	/**
	 * 
		 * @Description 查询 预约房间时间，在 日历控件 模式中  的 上一条，下一条 按钮 中 传参使用   
		 * List<String>
		 * @author chenyu
		 * 2014年8月22日 上午9:47:53
	 */
	public List<String> findParReserveDateRooM(ParReserveEntity parReserveEntity);
	
	/**根据 订单id，商品id 。查找订单商品详细 
	 * 
		 * @Description   
		 * PosOrderPrdEntity
		 * @author chenyu
		 * 2014年10月26日 下午4:20:58
	 */
	public PosOrderPrdEntity orderPrdByOrdIdAndPrdId(@Param("pkOrderId")String pkOrderId,@Param("fkPrdId")String fkPrdId);	
	
	/**
	 * 根据 订单id，门店编号。查找订单商品详细列表
	 * @return List<PosOrderPrdEntity>
	 * @throws RDPException
	 */
	public List<PosOrderPrdEntity> pageOrderPrdListByOrdId(@Param("fkBranId")String fkBranId,@Param("pkOrderId")String pkOrderId);
	
	/**
	* @Title:  团体预约附加菜单，装饰物列表  findParReserveTaocan  
	* @Description: <p> 团体预约获取  附加菜单，装饰物列表<p>
	* @date: 2014年8月8日
	* @return: List<GblScmPrdEntity>
	* @throws 
	*
	 */
	List<GblScmPrdEntity> findParReserveFujia(GblScmPrdEntity parReserve);
	
	/**
	* @Title:  根据商品编号，查询该商品的定价信息 
	* @Description: <p>  根据商品编号，查询该商品的定价信息<p>
	* @date: 2014年8月8日
	* @return: List<GblScmPrdPriceEntity>
	* @throws 
	*
	 */
	List<GblScmPrdPriceEntity> findPrdPriceByPrdId(GblScmPrdPriceEntity prdPrice);
	
	/**
	 * 根据会员姓名模糊查询会员信息
	 * 
	 * @param name
	 *            会员姓名
	 * @return
	 * @throws RDPException
	 */
	public List<CusMemEntity> findMemberByName(@Param("name") String name) throws RDPException;
	
	
	/**
	 * 根据会员id查询会员信息
	 * 
	 * @param pkMemId
	 *            会员id
	 * @return
	 * @throws RDPException
	 */
	public  CusMemEntity findMemberById(@Param("pkMemId") String pkMemId)  ;
	
	/**
	 * 根据会员姓名模糊查询会员信息
	 * 
	 * @param cusMem
	 *            会员姓名
	 * @return
	 * @throws RDPException
	 */
	public List<CusMemEntity> findMemberByPhoneAndName(CusMemEntity cusMem) throws RDPException;
	
	/**
	 * 根据监护人电话号码查询所属会员信息
	 * 
	 * @param telnum
	 *            监护人电话号码
	 * @return
	 * @throws RDPException
	 */
	public List<CusMemEntity> findMemberByTel(@Param("telnum") String telnum) throws RDPException;
	
	/**
	 * 查询派对列表信息
	 * @param ParReserveEntity
	 * 	 
	 * @return List<ParReserveEntity>
	 * @throws RDPException
	 */
	List<ParReserveEntity> findParReserve(ParReserveEntity parReserve);
	
	/**
	 * 根据房间编号，时间，查找是否 房间已经占用
	 * @param ParReserveEntity
	 * 	 
	 * @return List<ParReserveEntity>
	 * @throws RDPException
	 */
	List<ParReserveEntity> findAlreadyRoomList(ParReserveEntity parReserve);
	
	 
	
	/**
	 * 查找可用的 条码
	 * @param SysBarCodeEntity
	 * 	 
	 * @return List<SysBarCodeEntity>
	 * @throws RDPException
	 */
	List<SysBarCodeEntity> findSysBarCodeList(SysBarCodeEntity sysBarCode);
	
	/**
	 * 根据门店编号 ，查找可用的 条码
	 * @param SysBarCodeEntity
	 * 	 
	 * @return List<SysBarCodeEntity>
	 * @throws RDPException
	 */
	List<SysBarCodeEntity> findSysBarCodeListByBranId(SysBarCodeEntity sysBarCode);
	
	/**
	 * 派对定时 每隔30分钟，自动取消大于24小时 未预付 的 派对信息。
		 * @Description   
		 * void
		 * @author chenyu
		 * 2014年8月30日 下午11:55:37
	 */
	public void updateParReserveAutoCancel(@Param("dateTime") String dateTime);
	
	/**
	 * 查询     大于24小时 未预付 的 派对信息。
		 * @Description   
		 * void
		 * @author chenyu
		 * 2014年8月30日 下午11:55:37
	 */
	public List<String> findParReserveAutoCancel(@Param("dateTime") String dateTime);
	
	
	/**
	 * 派对定时 每隔10分钟，查询变更房间，显示新订单，覆盖原订单，2小时未付款，自动取消还原到原订单
		 * @Description   
		 * void
		 * @author chenyu
		 * 2014年8月30日 下午11:55:37
	 */
	public void updateParReserveFkCancel();
	
	/**
	 * 派对定时 每隔10分钟，查询变更房间，显示新订单，覆盖原订单，2小时未付款，
		 * @Description   
		 * void
		 * @author chenyu
		 * 2014年8月30日 下午11:55:37
	 */
	public List<String> findParReserveFkCancel();
	
	/**
	 * 查询     大于72小时 未预付 的 团体信息。
		 * @Description   
		 * void
		 * @author chenyu
		 * 2014年8月30日 下午11:55:37
	 */
	public List<String> findParTuantiReserveAutoCancel(@Param("dateTime") String dateTime);
	
	/**
	 * 派对定时 每隔30分钟，自动取消大于72小时 未预付 的 团体信息。
		 * @Description   
		 * void
		 * @author chenyu
		 * 2014年8月30日 下午11:55:37
	 */
	public void updateParTuanTiReserveAutoCancel(@Param("dateTime") String dateTime);
	/**
	 * 首页 - 待确认的派对团体(五日内将要举办的派对团体)
	 * @return
	 * @throws RDPException
	 * @date: 2014年9月25日
	 */
	public List<ParReserveEntity> indexNoConfirm(SearchParamVo searchParam)throws RDPException;
	
	/**
	 * 首页 - 预约后24小时未预付的团体
	 * @return
	 * @throws RDPException
	 * @date: 2014年9月25日
	 */
	public List<ParReserveEntity> indexNoPay(SearchParamVo searchParam)throws RDPException;
	
	/**
	 * 根据会员id，查找 派对优惠券 在当年内使用次数
		 * @Description   
		 * int
		 * @author chenyu
		 * 2014年9月24日 下午3:53:43
	 */
	int getCountMemOrderByMemId(@Param("fkMemId") String fkMemId);
	
	/**
	 *  根据 预约编号 ，修改 附加 套餐，装饰物
		 * @Description   
		 * void
		 * @author chenyu
		 * 2014年9月29日 上午10:13:03
	 */
	void updateParReservePkg(ParReserveEntity parReserveEntity);
	
	/**
	 * 验证该日期的时间段是否已被预约过
	 * 
	 * @Description int 2014年11月17日 下午3:53:43
	 */
	public Integer getCountByDateTime(@Param("pkParresId") String pkParresId, @Param("date") String date, @Param("time") String time);
	
	
	/**
	 * 验证该日期的时间段是否已被预约过
	 * 
	 * @Description chenyu 2014年11月17日 下午3:53:43
	 */
	public List<ParReserveEntity> getParReserveByDateTime(@Param("pkParresId") String pkParresId, @Param("date") String date, @Param("time") String time);
	
	/**
	 *根据预约时间，查询已用过的条码颜色
		 * @Description   
		 *  List<String>
		 * @author chenyu
	 */
	public List<String> findWristColorByresDate(Map<String, Object> map);
	
	/**
	 *根据预约时间，查询已用过的条码颜色 返回 颜色 的 实体list
		 * @Description   
		 *  List<String>
		 * @author chenyu
	 */
	public List<String> findWColByresDateList(Map<String, Object> map);
}